{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### State Space Discretization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "From the previous notebook you probably end up thinking about the fact that the states and action we were dealing with on the Frozen Lake environment were discrete. It should upset you a bit, there is really not much we can do with that? \n",
    "\n",
    "But worry-not! This notebook will relax that constraint. We will look at what to do when the state space is continuous. We will keep actions discrete, but that's OK. For now, we'll look at a very simple way of dealing with continuous states."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import tempfile\n",
    "import base64\n",
    "import pprint\n",
    "import json\n",
    "import sys\n",
    "import gym\n",
    "import io\n",
    "\n",
    "from gym import wrappers\n",
    "from subprocess import check_output\n",
    "from IPython.display import HTML"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "#### Q-Learning"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "In the world we will be looking into this time, the Cart Pole example, we have 4 continous values to represent a state. An X position, change in X, acceleration and change in acceleration.\n",
    "\n",
    "Let's take a peek at a single observation:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2017-04-26 16:22:50,371] Making new env: CartPole-v0\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-0.03106447  0.02174884 -0.02941032 -0.0195286 ]\n",
      "Discrete(2)\n"
     ]
    }
   ],
   "source": [
    "env = gym.make('CartPole-v0')\n",
    "observation = env.reset()\n",
    "actions = env.action_space\n",
    "env.close()\n",
    "print(observation)\n",
    "print(actions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Just as expected, a combination of 4 continuous variables make a state, and 2 discrete actions. Hmm, what to do? The actions are sort of the same as before, but the states are definitely different. We can't just create a Q table anymore...\n",
    "\n",
    "Let's look a little more into the the possible values these variables can take. We will explore for 100 episodes just to collect some sample data. You can see I force the algorithm to take the action 1 and action 0 for several consecutive timesteps. This is to make sure we explore the entire space and not just random. If we do random actions the cart would just jitter on the same place and the x axis would not get explored much. Stay with me, I'll show you."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode finished after 10 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 49 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 49 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 35 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 37 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 43 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 70 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 36 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 43 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 42 timesteps\n",
      "Episode finished after 36 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 52 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 68 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 44 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 49 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 36 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 36 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 35 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 48 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 62 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 41 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 46 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 42 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 37 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 41 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 45 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 43 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 42 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 53 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 34 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 38 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 43 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 46 timesteps\n",
      "Episode finished after 49 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 44 timesteps\n",
      "Episode finished after 79 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 41 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 48 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 60 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 52 timesteps\n",
      "Episode finished after 34 timesteps\n",
      "Episode finished after 51 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 42 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 34 timesteps\n",
      "Episode finished after 41 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 43 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 38 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 47 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 37 timesteps\n",
      "Episode finished after 53 timesteps\n",
      "Episode finished after 45 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 40 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 45 timesteps\n",
      "Episode finished after 50 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 59 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 56 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 59 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 34 timesteps\n",
      "Episode finished after 44 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 41 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 46 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 35 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 62 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 64 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 83 timesteps\n",
      "Episode finished after 61 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 44 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 69 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 43 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 44 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 35 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 34 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 63 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 43 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 42 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 49 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 53 timesteps\n",
      "Episode finished after 36 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 34 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 38 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 55 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 50 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 80 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 41 timesteps\n",
      "Episode finished after 34 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 47 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 8 timesteps\n",
      "Episode finished after 45 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 55 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 49 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 45 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 60 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 37 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 63 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 35 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 86 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 37 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 53 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 38 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 36 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 42 timesteps\n",
      "Episode finished after 51 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 36 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 42 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 37 timesteps\n",
      "Episode finished after 72 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 47 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 31 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 51 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 54 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 49 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 13 timesteps\n",
      "Episode finished after 60 timesteps\n",
      "Episode finished after 39 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 9 timesteps\n",
      "Episode finished after 34 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 36 timesteps\n",
      "Episode finished after 58 timesteps\n",
      "Episode finished after 32 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 34 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 10 timesteps\n",
      "Episode finished after 37 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 28 timesteps\n",
      "Episode finished after 56 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 23 timesteps\n",
      "Episode finished after 35 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 33 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 24 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 26 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 20 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 17 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 27 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 12 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 19 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 21 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 11 timesteps\n",
      "Episode finished after 22 timesteps\n",
      "Episode finished after 30 timesteps\n",
      "Episode finished after 18 timesteps\n",
      "Episode finished after 14 timesteps\n",
      "Episode finished after 25 timesteps\n",
      "Episode finished after 29 timesteps\n",
      "Episode finished after 16 timesteps\n",
      "Episode finished after 15 timesteps\n",
      "Episode finished after 44 timesteps\n"
     ]
    }
   ],
   "source": [
    "observations = []\n",
    "for episode in range(1000):\n",
    "    observation = env.reset()\n",
    "    for t in range(100):\n",
    "        env.render()\n",
    "        observations.append(observation)\n",
    "        action = env.action_space.sample()\n",
    "        if episode < 25:\n",
    "            action = 1\n",
    "        elif episode < 50:\n",
    "            action = 0\n",
    "        observation, reward, done, info = env.step(action)\n",
    "        if done:\n",
    "            print(\"Episode finished after {} timesteps\".format(t+1))\n",
    "            break\n",
    "env.close()\n",
    "x_vals = np.array(observations)[:,0]\n",
    "xd_vals = np.array(observations)[:,1]\n",
    "a_vals = np.array(observations)[:,2]\n",
    "ad_vals = np.array(observations)[:,3]\n",
    "y = np.zeros_like(x_vals)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Let's visualize the values that each of the variables can take:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.15, 0.15)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d9687a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x_vals, y + 0.10, '.')\n",
    "plt.plot(xd_vals, y + 0.05, '.')\n",
    "plt.plot(a_vals, y - 0.05, '.')\n",
    "plt.plot(ad_vals, y - 0.10, '.')\n",
    "\n",
    "plt.ylim([-0.15, 0.15])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "See? The x values seem to go from -1 to 1, changes in x from -2 to 2, etc.\n",
    "\n",
    "In fact, we can get the exact values from the `env`, although you could just sample a bunch of episodes and find out the limits yourself. Let's use the environments to keep focus."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "x_thres = ((env.env.observation_space.low/2)[0],\n",
    "           (env.env.observation_space.high/2)[0])\n",
    "a_thres = ((env.env.observation_space.low/2)[2],\n",
    "           (env.env.observation_space.high/2)[2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(-2.3999999999999999, 2.3999999999999999) (-0.20943951023931953, 0.20943951023931953)\n"
     ]
    }
   ],
   "source": [
    "print(x_thres, a_thres)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Not exactly the same as we thought. Can you think why? And, how to explore the state space throughout?\n",
    "\n",
    "Regardless, I will move forward trying to solve this environment. What we have above is good enough because it gives us the most commonly sampled observations for each of the variables. Cutting through these and boxing them is a process called discretization. It is basically a way to convert from continuous states to discrete. This would let us deal with the continous states nicely.\n",
    "\n",
    "Let's try it."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85d9574cf8>]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFJ5JREFUeJzt3X+s3fV93/HnCxvMj7T8MOaXjWc63HSOmibZGXRro0VN\nAFOpmDVMgkqrp1JZ+SN/dN2yEqGJlHQqWbpSVc0qeUk0L1UDC2qLqySzCJQ26vKD6/wiJHHssKQY\nE36ZWGIQwOa9P87XcD6Xc+6vc3yvL34+pKvz/fE+3/M+3/v53tc93++556aqkCTpqJOWugFJ0vHF\nYJAkNQwGSVLDYJAkNQwGSVLDYJAkNQwGSVLDYJAkNQwGSVJj5VI3sBDnnntubdiwYanbkKRlZffu\n3U9V1ZrZ6pZlMGzYsIGpqamlbkOSlpUkP5hLnaeSJEkNg0GS1DAYJEkNg0GS1DAYJEkNg0GS1DAY\nJEkNg0GS1DAYJEkNg0GS1DAYJEkNg0GS1DAYJEkNg0GS1DAYJEkNg0GS1JhIMCTZnGRPkn1Jbhqy\nflWSO7v1X0qyYWDdm5N8IclDSR5McuokepIkLczYwZBkBfAR4GpgE3BDkk3Tym4EnqmqS4HbgQ91\n910J/Bnwnqp6E/AO4KVxe5IkLdwkXjFcBuyrqoer6kXgDmDLtJotwI5u+i7gnUkCXAl8o6q+DlBV\nT1fVkQn0JElaoEkEw1rgkYH5/d2yoTVVdRg4BKwGfhqoJLuSfCXJf5xAP5KkMaycwDYyZFnNsWYl\n8IvAPwOeA+5Nsruq7n3NgyTbgG0A69evH6thSdJok3jFsB+4eGB+HXBgVE13XeFM4GC3/G+r6qmq\neg74DPC2YQ9SVdurqldVvTVr1kygbUnSMJMIhgeAjUkuSXIKcD2wc1rNTmBrN30dcF9VFbALeHOS\n07vA+JfAtybQkyRpgcY+lVRVh5O8l/4P+RXAx6vqoSS3AlNVtRP4GPCJJPvov1K4vrvvM0n+kH64\nFPCZqvr0uD1JkhYu/V/cl5der1dTU1NL3YYkLSvdNdzebHX+5bMkqWEwSJIaBoMkqWEwSJIaBoMk\nqWEwSJIaBoMkqTGJz0p63furrz7Kh3ft4cCPnueis07jfVe9kWvfOv1zAnUicmxolOU8NgyGWfzV\nVx/l/X/xIM+/1P808Ed/9Dzv/4sHAZbNN1nHhmNDoyz3seGppFl8eNeeV765Rz3/0hE+vGvPEnWk\n44VjQ6Ms97FhMMziwI+en9dynTgcGxpluY8Ng2EWF5112ryW68Th2NAoy31sGAyzeN9Vb+S0k1c0\ny047eQXvu+qNS9SRjheODY2y3MeGF59ncfRC0XJ9d4GOHceGRlnuY8OP3ZakE4Qfuy1JWhCDQZLU\nMBgkSQ2DQZLUMBgkSY2JBEOSzUn2JNmX5KYh61clubNb/6UkG6atX5/k2ST/YRL9SJIWbuxgSLIC\n+AhwNbAJuCHJpmllNwLPVNWlwO3Ah6atvx347Li9SJLGN4lXDJcB+6rq4ap6EbgD2DKtZguwo5u+\nC3hnkgAkuRZ4GHhoAr1IksY0iWBYCzwyML+/Wza0pqoOA4eA1UnOAH4H+N0J9CFJmoBJBEOGLJv+\n59Sjan4XuL2qnp31QZJtSaaSTD355JMLaFOSNBeT+Kyk/cDFA/PrgAMjavYnWQmcCRwELgeuS/Jf\ngLOAl5P8uKr+ZPqDVNV2YDv0PxJjAn1LkoaYRDA8AGxMcgnwKHA98GvTanYCW4EvANcB91X/Q5re\nfrQgyQeAZ4eFgiRp8YwdDFV1OMl7gV3ACuDjVfVQkluBqaraCXwM+ESSffRfKVw/7uNKko4NP11V\nkk4QfrqqJGlBDAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJ\nUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUmMiwZBkc5I9SfYluWnI+lVJ7uzW\nfynJhm75FUl2J3mwu/2lSfQjSVq4sYMhyQrgI8DVwCbghiSbppXdCDxTVZcCtwMf6pY/BfxKVf0s\nsBX4xLj9SJLGM4lXDJcB+6rq4ap6EbgD2DKtZguwo5u+C3hnklTVV6vqQLf8IeDUJKsm0JMkaYEm\nEQxrgUcG5vd3y4bWVNVh4BCwelrNu4GvVtULE+hJkrRAKyewjQxZVvOpSfIm+qeXrhz5IMk2YBvA\n+vXr59+lJGlOJvGKYT9w8cD8OuDAqJokK4EzgYPd/DrgL4Ffr6rvjXqQqtpeVb2q6q1Zs2YCbUuS\nhplEMDwAbExySZJTgOuBndNqdtK/uAxwHXBfVVWSs4BPA++vqr+fQC+SpDGNHQzdNYP3AruAbwP/\nq6oeSnJrkmu6so8Bq5PsA34bOPqW1vcClwL/KcnXuq/zxu1JkrRwqZp+OeD41+v1ampqaqnbkKRl\nJcnuqurNVudfPkuSGgaDJKlhMEiSGgaDJKlhMEiSGgaDJKlhMEiSGgaDJKlhMEiSGgaDJKlhMEiS\nGgaDJKlhMEiSGgaDJKlhMEiSGgaDJKlhMEiSGgaDJKlhMEiSGgaDJKkxkWBIsjnJniT7ktw0ZP2q\nJHd267+UZMPAuvd3y/ckuWoS/UiSFm7sYEiyAvgIcDWwCbghyaZpZTcCz1TVpcDtwIe6+24Crgfe\nBGwG/lu3PUnSElk5gW1cBuyrqocBktwBbAG+NVCzBfhAN30X8CdJ0i2/o6peAP5vkn3d9r4wgb5e\n65Evw/c/DxveDhdfNvv8bPeBua1bSN3g9OPfgm/fDaefC8899ertBW+GFw7Bs0/269+wBi54C/zw\n6/Ds4/CG8+GCn+vPU6+uOzr9/NNw2mr44de6bVT/Pqt+En74jf72n94HP3wQquCsdbDmjbDqTPju\nZ6GAC38O/uGL8PxBIP1tnL4aLr68/1iHDsDLR2D9z8ORH8MPH4KTT4U3nAcHvw+Hf9x/nJdf7D/P\nOgIrT+/fHnmh22aAl4/JkDgxrQCOjF6dFVAv0/8GAytWwWlnwalnwU+uhae+AytOhdPPhnP+MRz8\nHvzEBbB6Y3/M/sQFcPIZ8OgUrO3BqjP64+v5g3Do0f42L/hZWH1pv/7wi3DkRTjj3P66//cUnLG6\nP9amj1PSH9PPPz2/42whx/t8tjdT7ageh02ftvrV5zvT8z7a7zEyiWBYCzwyML8fuHxUTVUdTnII\nWN0t/+K0+66dQE+v9ciXYcc1/QG44hTYfBv875tGz2/d2b/fqPuctBKo/g+9mdYtpG5wOifByy8N\nf07fu2/MndL9IB9l+vYP/QP84P+0y57a89r7vfgs/OgH7bKHB7b1wqF+cB11YHdbe/i5gZmauUct\nwAyhAP1Qbspf6H+/nn28/X4/Azw67Xs33cGHhy+fPj6g3fZTDIy1IeM0J3XHSeDlw3DSilen53J8\nz3a8z2d7M9UOrptt+shL9H8BOvp8RzzvFav6/R7DcJhEMGTIsulH8qiaudy3v4FkG7ANYP369fPp\nr+/7n+9/o+pI//bbd888//3P9+83subob7A1y7qF1A1MTz9IJ8ofuFoOhozTern7Qdqtn/E4W8jx\nPp/tjXmMD04PvZ3+vLt+j2EwTOLi837g4oH5dcCBUTVJVgJnAgfneF8Aqmp7VfWqqrdmzZr5d7nh\n7f00z4r+7T/ZMvP8hrfPfp8VJ89t3ULqjk6fdPL8n+uc+aY0LQdDfn/MSf1j5JVj6eT5Hd+zHu/z\n2d5MtaN6HDL9yvGYWZ73Ka+efjpGJvGK4QFgY5JLgEfpX0z+tWk1O4Gt9K8dXAfcV1WVZCfw50n+\nELgI2Ah8eQI9vdbFl/Vffg2eBzx/08zzMPN9YG7rFlI3OO01BrzGMEknyDWG2Y7v2Y73+WxvptpR\nPQ6bPk6uMaRq/NMJSX4Z+CP6I+7jVfWfk9wKTFXVziSnAp8A3kr/lcL1AxerbwZ+AzgM/FZVfXa2\nx+v1ejU1NTV235J0Ikmyu6p6s9ZNIhgWm8EgSfM312DwJLMkqWEwSJIaBoMkqWEwSJIaBoMkqWEw\nSJIaBoMkqWEwSJIaBoMkqWEwSJIaBoMkqWEwSJIaBoMkqWEwSJIaBoMkqWEwSJIaBoMkqWEwSJIa\nBoMkqWEwSJIaYwVDknOS3JNkb3d79oi6rV3N3iRbu2WnJ/l0ku8keSjJbeP0IkmajHFfMdwE3FtV\nG4F7u/lGknOAW4DLgcuAWwYC5A+q6meAtwK/kOTqMfuRJI1p3GDYAuzopncA1w6puQq4p6oOVtUz\nwD3A5qp6rqr+BqCqXgS+Aqwbsx9J0pjGDYbzq+oxgO72vCE1a4FHBub3d8tekeQs4Ffov+qQJC2h\nlbMVJPkccMGQVTfP8TEyZFkNbH8l8Engj6vq4Rn62AZsA1i/fv0cH1qSNF+zBkNVvWvUuiSPJ7mw\nqh5LciHwxJCy/cA7BubXAfcPzG8H9lbVH83Sx/aull6vVzPVSpIWbtxTSTuBrd30VuDuITW7gCuT\nnN1ddL6yW0aS3wPOBH5rzD4kSRMybjDcBlyRZC9wRTdPkl6SjwJU1UHgg8AD3detVXUwyTr6p6M2\nAV9J8rUkvzlmP5KkMaVq+Z2V6fV6NTU1tdRtSNKykmR3VfVmq/MvnyVJDYNBktQwGCRJDYNBktQw\nGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJDYNBktQwGCRJ\nDYNBktQwGCRJDYNBktQYKxiSnJPkniR7u9uzR9Rt7Wr2Jtk6ZP3OJN8cpxdJ0mSM+4rhJuDeqtoI\n3NvNN5KcA9wCXA5cBtwyGCBJfhV4dsw+JEkTMm4wbAF2dNM7gGuH1FwF3FNVB6vqGeAeYDNAkjcA\nvw383ph9SJImZNxgOL+qHgPobs8bUrMWeGRgfn+3DOCDwH8FnhuzD0nShKycrSDJ54ALhqy6eY6P\nkSHLKslbgEur6t8l2TCHPrYB2wDWr18/x4eWJM3XrMFQVe8atS7J40kurKrHklwIPDGkbD/wjoH5\ndcD9wD8H/mmS73d9nJfk/qp6B0NU1XZgO0Cv16vZ+pYkLcy4p5J2AkffZbQVuHtIzS7gyiRndxed\nrwR2VdWfVtVFVbUB+EXgu6NCQZK0eMYNhtuAK5LsBa7o5knSS/JRgKo6SP9awgPd163dMknScShV\ny++sTK/Xq6mpqaVuQ5KWlSS7q6o3W51/+SxJahgMkqSGwSBJahgMkqSGwSBJahgMkqSGwSBJahgM\nkqSGwSBJahgMkqSGwSBJahgMkqSGwSBJahgMkqSGwSBJahgMkqSGwSBJahgMkqSGwSBJahgMkqTG\nWMGQ5Jwk9yTZ292ePaJua1ezN8nWgeWnJNme5LtJvpPk3eP0I0ka37ivGG4C7q2qjcC93XwjyTnA\nLcDlwGXALQMBcjPwRFX9NLAJ+Nsx+5EkjWncYNgC7OimdwDXDqm5Crinqg5W1TPAPcDmbt1vAL8P\nUFUvV9VTY/YjSRrTuMFwflU9BtDdnjekZi3wyMD8fmBtkrO6+Q8m+UqSTyU5f8x+JEljmjUYknwu\nyTeHfG2Z42NkyLICVgLrgL+vqrcBXwD+YIY+tiWZSjL15JNPzvGhJUnztXK2gqp616h1SR5PcmFV\nPZbkQuCJIWX7gXcMzK8D7geeBp4D/rJb/ingxhn62A5sB+j1ejVb35KkhRn3VNJO4Oi7jLYCdw+p\n2QVcmeTs7qLzlcCuqirgr3k1NN4JfGvMfiRJYxo3GG4DrkiyF7iimydJL8lHAarqIPBB4IHu69Zu\nGcDvAB9I8g3g3wD/fsx+JEljSv8X9+Wl1+vV1NTUUrchSctKkt1V1Zutzr98liQ1DAZJUsNgkCQ1\nDAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJUsNgkCQ1DAZJ\nUsNgkCQ1luV/cEvyJPCDY7T5c4GnjtG2lzv3zWjum9HcN6Mt9r75R1W1ZraiZRkMx1KSqbn867sT\nkftmNPfNaO6b0Y7XfeOpJElSw2CQJDUMhtfavtQNHMfcN6O5b0Zz34x2XO4brzFIkhq+YpAkNU74\nYEjyr5M8lOTlJCPfHZBkc5I9SfYluWkxe1wqSc5Jck+Svd3t2SPqjiT5Wve1c7H7XEyzjYMkq5Lc\n2a3/UpINi9/l4pvDfvm3SZ4cGCe/uRR9LoUkH0/yRJJvjlifJH/c7btvJHnbYvc43QkfDMA3gV8F\n/m5UQZIVwEeAq4FNwA1JNi1Oe0vqJuDeqtoI3NvND/N8Vb2l+7pm8dpbXHMcBzcCz1TVpcDtwIcW\nt8vFN4/j486BcfLRRW1yaf0PYPMM668GNnZf24A/XYSeZnTCB0NVfbuq9sxSdhmwr6oerqoXgTuA\nLce+uyW3BdjRTe8Arl3CXo4HcxkHg/vsLuCdSbKIPS6FE/X4mJOq+jvg4AwlW4D/WX1fBM5KcuHi\ndDfcCR8Mc7QWeGRgfn+37PXu/Kp6DKC7PW9E3alJppJ8McnrOTzmMg5eqamqw8AhYPWidLd05np8\nvLs7VXJXkosXp7Vl4bj7+bJyKR98sST5HHDBkFU3V9Xdc9nEkGWvi7dzzbRv5rGZ9VV1IMlPAfcl\nebCqvjeZDo8rcxkHr9uxMoO5POe/Bj5ZVS8keQ/9V1W/dMw7Wx6OuzFzQgRDVb1rzE3sBwZ/w1kH\nHBhzm8eFmfZNkseTXFhVj3UvbZ8YsY0D3e3DSe4H3gq8HoNhLuPgaM3+JCuBM5n5NMLrwaz7paqe\nHpj975wA117m4bj7+eKppLl5ANiY5JIkpwDXA6/rd990dgJbu+mtwGteXSU5O8mqbvpc4BeAby1a\nh4trLuNgcJ9dB9xXr/8/Fpp1v0w7Z34N8O1F7O94txP49e7dST8PHDp6CnfJVNUJ/QX8K/qJ/QLw\nOLCrW34R8JmBul8Gvkv/N+Gbl7rvRdo3q+m/G2lvd3tOt7wHfLSb/hfAg8DXu9sbl7rvY7xPXjMO\ngFuBa7rpU4FPAfuALwM/tdQ9Hyf75feBh7px8jfAzyx1z4u4bz4JPAa81P2suRF4D/Cebn3ov6vr\ne90x1Fvqnv3LZ0lSw1NJkqSGwSBJahgMkqSGwSBJahgMkqSGwSBJahgMkqSGwSBJavx/cMDAqfNe\n6McAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d95e42e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x1 = np.linspace(x_thres[0] + .5, x_thres[1] - .5, \n",
    "                 4, endpoint=False)[1:]\n",
    "y1 = np.zeros(len(x1)) + 0.05\n",
    "\n",
    "plt.ylim([-0.075, 0.075])\n",
    "plt.plot(x1, y1, 'o')\n",
    "plt.plot(x_vals, y, '.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "I'm creating 4 states, anything left/right of each of the dots represent a unique state.\n",
    "\n",
    "Let's do the same for the variable 'change in x' or xd:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85d94e3198>]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d951e588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xd1 = np.sort(np.append(np.linspace(-1.5, 1.5, 4, endpoint=True), 0))\n",
    "y1 = np.zeros(len(xd1)) + 0.05\n",
    "\n",
    "plt.ylim([-0.075, 0.075])\n",
    "plt.plot(xd1, y1, 'o')\n",
    "plt.plot(xd_vals, y, '.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "And for the acceleration variable:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85d944a518>]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d9478e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "a1 = np.sort(np.linspace(a_thres[0], a_thres[1],\n",
    "                         10, endpoint=False)[1:])\n",
    "y1 = np.zeros(len(a1)) + 0.05\n",
    "\n",
    "plt.ylim([-0.1, 0.1])\n",
    "plt.plot(a1, y1, 'o')\n",
    "plt.plot(a_vals, y, '.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Finally, the 'change in acceleration':"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85d93a5470>]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nWr6mAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d9411240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "all_vals = np.sort(np.append(\n",
    "    (np.logspace(-7, 4, 6, endpoint=False, base=2)[1:],\n",
    "    -np.logspace(-7, 4, 6, endpoint=False, base=2)[1:]), 0))\n",
    "idxs = np.where(np.abs(all_vals) < 2)\n",
    "ad1 = all_vals[idxs]\n",
    "y1 = np.zeros(len(ad1)) + 0.05\n",
    "\n",
    "plt.ylim([-0.075, 0.075])\n",
    "plt.plot(ad1, y1, 'o')\n",
    "plt.plot(ad_vals, y, '.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Now, we use a function called 'digitize' which basically creates the buckets as mentioned above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.16755161, -0.12566371, -0.0837758 , -0.0418879 ,  0.        ,\n",
       "        0.0418879 ,  0.0837758 ,  0.12566371,  0.16755161])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "For example, look at the acceleration variable. We go from -0.16 to 0.16 with equally spaced chunks. What would you expect a value of -0.99 fall into? Which bucket?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(0)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.digitize(-0.99, a1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Right. Bucket 0. How about a value of 0. If -0.99, which is less than -0.16 (the first bucket) falls into the first bucket, what do you think 0 would fall into?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(5)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.digitize(0, a1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "That was actually a tricky question. Digitize default to the 'left' if the value is equal to any of the buckets. How about a value slightly less than zero then? What bucket do you call? "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(4)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.digitize(-0.0001, a1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Right, 4 it is, how about a number slightly more than zero?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(5)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.digitize(0.0001, a1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Back to 5.\n",
    "\n",
    "Cool!!\n",
    "\n",
    "Let's look at the buckets next to each of the variables."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85d9326cf8>]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD8CAYAAACfF6SlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFMZJREFUeJzt3X+QXeV93/H3d+9KCCRAAiSE0WLhIGwgGGJvoINjJw1Q\ny04DeBISSDMVrlPVqZm647ZjtSQ4JcOYxJ3EHUfORLGZKJm4JDZx0Bg5DmAnsSeFsLLBspARCpa9\nQkJIRhY/hJD27rd/7JW6Wl3pavcc6e7u837NaO55znn2PN/nSvvZo2fvPTcyE0lSWXq6XYAk6eQz\n/CWpQIa/JBXI8JekAhn+klQgw1+SClRL+EfE0oh4OiI2R8SKNsc/GBHrI+KJiPhGRFxax7iSpImJ\nqq/zj4gGsAm4HtgKPA7cmplPjepzRma+1Nq+AfiPmbm00sCSpAmr48r/KmBzZj6bmfuB+4AbR3c4\nGPwtswHfWSZJXdRbwznOBwZHtbcCV4/tFBEfAj4CzAR+tt2JImI5sBxg9uzZb3/LW95SQ3mSVI51\n69btysz5nfrVEf7RZt8RV/aZuRJYGRG/AvwGsKxNn1XAKoD+/v4cGBiooTxJKkdEfP94+tWx7LMV\n6BvVXgRsO0b/+4CbahhXkjRBdYT/48CSiLgwImYCtwBrRneIiCWjmj8HPFPDuJKkCaq87JOZQxFx\nO/AVoAHcm5kbIuIuYCAz1wC3R8R1wAFgN22WfCRJJ08da/5k5lpg7Zh9d47a/nAd40iS6uE7fCWp\nQIa/JBXI8JekAhn+klQgw1+SCmT4S1KBDH9JKpDhL0kFMvwlqUCGv7ri9x/a1O0SKpsOc4DpMw+N\nj+Gvrvjfj0z9e/tNhznA9JmHxsfwl6QCGf6SVCDDX5IKZPhLUoEMf3XFh69d0rnTJDcd5gDTZx4a\nn8g84rPWJwU/wF2Sxi8i1mVmf6d+XvlLUoEMf0kqkOEvSQUy/CWpQIa/JBXI8JekAhn+klQgw1+S\nCmT4S1KBDH9JKlAt4R8RSyPi6YjYHBEr2hz/SEQ8FRHfjohHIuKNdYwrSZqYyuEfEQ1gJfAe4FLg\n1oi4dEy3bwH9mflW4AvA71YdV5I0cb01nOMqYHNmPgsQEfcBNwJPHeyQmV8b1f9R4FdrGFeT3PPP\n7uG7j24HYH7f6ex79QCzZs9g5+DLh/btHHyZvS/tB+C0M2YesW/fqwd45cV97HtliOZQkxmnNJgz\nbxb79w3RPDB8aKzm0DBDB4bJ4SSBHAYm5z0Lj0v0QE8jAGgOjUwkAiDITHp6ghmn9DBzVi9zzprF\nrDkzDnv+gI7bB59jGHnuZ87q5blNu2n09kDAvpcPMPfc03jbu9/IwjedefImr5OijvA/Hxgc1d4K\nXH2M/h8AvlzDuJrEnn92D3/9e988FFx1eX1vk9f3vlrrOSejHIbm8OHP3cgNeEf2DTez9Vw0efnF\n109YHbuf38v3v/ND3vdf3uYPgGmmjjX/aLOv7Xd8RPwq0A984ijHl0fEQEQM7Ny5s4bS1C3Pbdpd\ne/CrO4abyXObdne7DNWsjvDfCvSNai8Cto3tFBHXAXcAN2Rm20uVzFyVmf2Z2T9//vwaSlO3nH/x\nPBq97a4LNNX0NILzL57X7TJUszqWfR4HlkTEhcBzwC3Ar4zuEBE/AfwRsDQzX6hhTE1yC990Jjd9\n5G2u+U+Qa/460SqHf2YORcTtwFeABnBvZm6IiLuAgcxcw8gyzxzg8zHyL/gHmXlD1bE1uS1805mG\nhjRJ1XHlT2auBdaO2XfnqO3r6hhHklQP3+ErSQUy/CWpQIa/JBXI8JekAhn+klQgw1+SCmT4S1KB\nDH9JKpDhL0kFMvwlqUCGvyQVyPCXpAIZ/pJUIMNfkgpk+EtSgQx/SSqQ4S9JBTL8JalAhr8kFcjw\nl6QCGf6SVCDDX5IKZPhLUoEMf0kqkOEvSQUy/CWpQIa/JBXI8JekAtUS/hGxNCKejojNEbGizfF3\nRcQ3I2IoIn6xjjFVo699vNsV1OtkzWe6jXOyTLf5TFGVwz8iGsBK4D3ApcCtEXHpmG4/AG4DPld1\nPJ0Af39Ptyuo18maz3Qb52SZbvOZonprOMdVwObMfBYgIu4DbgSeOtghM7e0jg3XMJ4kqaI6ln3O\nBwZHtbe29o1bRCyPiIGIGNi5c2cNpUmS2qkj/KPNvpzIiTJzVWb2Z2b//PnzK5YlSTqaOsJ/K9A3\nqr0I2FbDeSVJJ0gd4f84sCQiLoyImcAtwJoazquT5aePeIHW1Hay5jPdxjlZptt8pqjInNAKzeEn\niXgv8EmgAdybmXdHxF3AQGauiYifBL4IzAP2Ac9n5mXHOmd/f38ODAxUrk2SShIR6zKzv1O/Ol7t\nQ2auBdaO2XfnqO3HGVkOkiRNAr7DV5IKZPhLUoEMf0kqkOEvSQUy/CWpQIa/JBXI8JekAhn+klQg\nw1+SCmT4S1KBarm9g/6/bZs2MrhhPX2XXc4bLr7kiPbBPo+vuZ9XXnyReee9gb0v7eG0M85k70t7\nWLD4TZxy2mz6LrscgH964H52b3+O11/by76XXqJnxgxOP+tszr3wx9j70h4uvvoazrlgMQ995tPs\n+v73DqulMWMGOTxMZnLBj1/B66++yvP/vOmY9Z9+zgJe3vVCx3medX4fLz432LFfY+YpNPe/3rFf\nT6PBcLPZsZ9OnhmzZnFg376O/Waeehr7X9t7zD49vTN4+3tvYN3aBxgeGmrbJ3p6eMs17+LKd/8c\n//C5P2Hbpu+SrX8TPY1eomfkWvW0M+fyL953M2+97j18++Evs/6rDzHnrLO48Mq3s+N7z/Lqj3Yz\ne+48Lvvpnz30PTe630/e8AuH9o/V7vt1uqrlxm4nwlS8sdu2TRv5/G/fQXNoiEZvL/9y2b/na6v/\n+FD75t+8G4C/+K3/znCz/TfAQY3eXoaHkxw2EFWYCDiOXLrkp36Gjd/4u6Meb/T28ksf+zi7frCF\nh/545aH9PY1efvm3Pn5EuI/9/r35N++ekj8AjvfGbi771Ghww3qaQ0Pk8DDNoSE2PfaPh7UHN6xn\ncMP6jsEP0Gw2DX6V6TgvSL/3xLpjHm82mwxuWM+mx/7xsP3DzZHvxbHGfv+26zOdGP416rvschq9\nI/89bfT2cvHV1xzW7rvscvouu5yeRufVtkajQfQ0TkLV0iQT7T4c8EgXXvn2Yx5vNBr0XXY5F199\nzWH7exq9h5ZVRxv7/duuz3Tisk/NXPM/nGv+U5dr/lNvyQeOf9nH8JekacQ1f0nSURn+klQgw1+S\nCmT4S1KBDH9JKpDhL0kFMvwlqUCGvyQVyPCXpAIZ/pJUIMNfkgpUS/hHxNKIeDoiNkfEijbHT4mI\nv2gdfywiFtcxriRpYiqHf0Q0gJXAe4BLgVsj4tIx3T4A7M7Mi4DfB36n6riSpImr48r/KmBzZj6b\nmfuB+4Abx/S5EVjd2v4CcG3Ecd60W5JUuzrC/3xg9I3dt7b2te2TmUPAHuDssSeKiOURMRARAzt3\n7qyhNElSO3WEf7sr+LEfEnA8fcjMVZnZn5n98+fPr6E0SVI7dYT/VqBvVHsRsO1ofSKiFzgTeLGG\nsSVJE1BH+D8OLImICyNiJnALsGZMnzXAstb2LwJfzcn6EWKSVIDOnyTeQWYORcTtwFeABnBvZm6I\niLuAgcxcA3wW+LOI2MzIFf8tVceVJE1c5fAHyMy1wNox++4ctb0PuLmOsSRJ1fkOX0kqkOEvSQUy\n/CWpQIa/JBXI8JekAhn+klQgw1+SCmT4S1KBDH9JKpDhL7Xx6Sc+fcR2p8dOx6TJxPCX2vjDJ//w\niO1Oj52OSZOJ4S9JBTL8JalAhr8kFcjwl6QCGf5SG79+xa8fsd3psdMxaTKJyfppiv39/TkwMNDt\nMiRpSomIdZnZ36mfV/6SVCDDX5IKZPhLUoEMf0kqkOEvSQUy/CWpQIa/JBXI8JekAhn+klQgw1+S\nClQp/CPirIh4KCKeaT3OO0q/v4mIH0XEl6qMJ0mqR2/Fr18BPJKZ90TEilb7o236fQI4DfgPFceT\nTpitK75+wsdYdM87T/gY0vGouuxzI7C6tb0auKldp8x8BHi54ljSCXMygv9kjiN1UjX8z83M7QCt\nxwVVThYRyyNiICIGdu7cWbE0SdLRdFz2iYiHgYVtDt1RdzGZuQpYBSO3dK77/JKkER3DPzOvO9qx\niNgREedl5vaIOA94odbqpJNk0T3vdM1fRan6C981wDLgntbjA5UrkrrEYFZJqq753wNcHxHPANe3\n2kREf0R85mCniPg68Hng2ojYGhHvrjiuJKmCSlf+mflD4No2+weAXxvV9pJKkiYR3+ErSQUy/CWp\nQIa/JBXI8JekAhn+klQgw1+SCmT4S1KBDH9JKpDhL0kFMvwlqUCGvyQVyPCXpAIZ/pJUIMNfkgpk\n+EtSgQx/SSqQ4S9JBTL8JalAhr8kFcjwl6QCGf6SVCDDX5IKZPhLUoEMf0kqkOEvSQUy/CWpQIa/\nJBWoUvhHxFkR8VBEPNN6nNemz5UR8X8jYkNEfDsifrnKmJKk6qpe+a8AHsnMJcAjrfZYe4F/m5mX\nAUuBT0bE3Irjqst2fuoPul3ChE2k9rFfs/NTf3Bo3+hjE31eSns+1X1Vw/9GYHVrezVw09gOmbkp\nM59pbW8DXgDmVxxXXbZr5cpulzBhE6l97NfsWrny0L7Rxyb6vJT2fKr7qob/uZm5HaD1uOBYnSPi\nKmAm8M8Vx5UkVdDbqUNEPAwsbHPojvEMFBHnAX8GLMvM4aP0WQ4sB7jgggvGc3pJ0jh0DP/MvO5o\nxyJiR0Scl5nbW+H+wlH6nQE8CPxGZj56jLFWAasA+vv7s1NtkqSJqbrsswZY1tpeBjwwtkNEzAS+\nCPxpZn6+4niSpBp0vPLv4B7gLyPiA8APgJsBIqIf+GBm/hrwS8C7gLMj4rbW192WmU9UHFtddM6H\nPtTtEiZsIrWP/ZrR7aNtn+iaJoupXHvJInNyrq709/fnwMBAt8uQpCklItZlZn+nfr7DV5IKZPhL\nUoEMf0kqkOEvSQUy/CWpQIa/JBXI8JekAhn+klQgw1+SCmT4S1KBDH9JKlDVG7tNSgMDA3zrW9/i\n9NNP5x3veAd9fX2HHR8cHGTLli0sXryYHTt28OijjzI0NMTChQs5++yz2bRpE/v372fu3Lmceuqp\nzJkzhyuuuAKABx98kB07dpCZRASzZs1izpw5ZCa7d++mt7eXRqPBgQMHOHDgAL29vcycOZO9e/d2\n46mQNE6NRoPMZHi47ceOHKanp4cFCxbQ39/P5s2b2bVrF+eccw4XXXTRoXZvby979uxh3759zJgx\ngze/+c0sWLCAU089lddee+3Q4+LFiwF48sknAbjiiiuOyK46Tbsbuw0MDPClL33pULunp4f3v//9\nh57EwcFBVq9eTbPZJCKO6y/44HmOt68kjUdE0NPTc9gPnUajwW233TbuHwDF3tht48aNh7WHh4fZ\nsmXLofaWLVtoNpvH/ZN99Hkk6UTITJrN5mE502w2D8uuuk278L/kkksOa/f09Bz67xTA4sWLaTQa\nh37SHq/x9JWk8YgIGo3GYTnTaDQOy666Tbs1//7+kf/tHG3Nv6+vj2XLlrnmL6kt1/y7zA9zkaTx\nK3bNX5LUmeEvSQUy/CWpQIa/JBXI8JekAhn+klQgw1+SCmT4S1KBDH9JKpDhL0kFMvwlqUCVwj8i\nzoqIhyLimdbjvDZ93hgR6yLiiYjYEBEfrDKmJKm6qlf+K4BHMnMJ8EirPdZ24JrMvBK4GlgREW+o\nOK4kqYKq4X8jsLq1vRq4aWyHzNyfma+3mqfUMKYkqaKq9/M/NzO3A2Tm9ohY0K5TRPQBDwIXAf8t\nM7cdpd9yYHmr+UpEPD3Oes4Bdo3zayYz5zO5OZ/JrdT5vPF4Ttbxfv4R8TCwsM2hO4DVmTl3VN/d\nmXnEuv+o428A/hr4+czccTwFjkdEDBzPfaynCuczuTmfyc35HFvHK//MvO4YxeyIiPNaV/3nAS90\nONe2iNgAvBP4wrirlSTVour6+xpgWWt7GfDA2A4RsSgiTm1tzwPeAYx3OUeSVKOq4X8PcH1EPANc\n32oTEf0R8ZlWn0uAxyLiSeDvgf+Vmesrjns0q07QebvF+Uxuzmdycz7HMGk/w1eSdOL4sktJKpDh\nL0kFmnbhHxG/HRHfbt1O4m+n+ruJI+ITEfHd1py+GBFzO3/V5BURN7du8zEcEVP2ZXgRsTQino6I\nzRHR7p3tU0ZE3BsRL0TEd7pdSx0ioi8ivhYRG1v/1j7c7ZqqiIhZEfFPEfFkaz7/s5bzTrc1/4g4\nIzNfam3/J+DSzJyy9xOKiH8FfDUzhyLidwAy86NdLmvCIuISYBj4I+C/ZuZAl0sat4hoAJsYeZHD\nVuBx4NbMfKqrhU1QRLwLeAX408z88W7XU1XrZefnZeY3I+J0YB1w0xT++wlgdma+EhEzgG8AH87M\nR6ucd9pd+R8M/pbZwJT+6ZaZf5uZQ63mo8CibtZTVWZuzMyp/lLfq4DNmflsZu4H7mPkVidTUmb+\nA/Bit+uoS2Zuz8xvtrZfBjYC53e3qonLEa+0mjNafyrn2rQLf4CIuDsiBoF/A9zZ7Xpq9O+AL3e7\nCHE+MDiqvZUpHC7TWUQsBn4CeKy7lVQTEY2IeIKRN9I+lJmV5zMlwz8iHo6I77T5cyNAZt6RmX3A\nnwO3d7fazjrNp9XnDmCIkTlNascznyku2uyb0v/DnI4iYg5wP/Cfx6wITDmZ2WzdGXkRcFVEVF6e\nq3pjt6441i0nxvgcIzeU+9gJLKeyTvOJiGXAvwauzSnwS5px/P1MVVuBvlHtRUDbmxWqO1pr4/cD\nf56Zf9XteuqSmT+KiL8DlgKVfkE/Ja/8jyUiloxq3gB8t1u11CEilgIfBW7IzL3drkfAyC94l0TE\nhRExE7iFkVudaBJo/YL0s8DGzPy9btdTVUTMP/gqv9atcq6jhlybjq/2uR94MyOvKPk+8MHMfK67\nVU1cRGxm5HMQftja9egUf/XS+4BPAfOBHwFPZOa7u1vV+EXEe4FPAg3g3sy8u8slTVhE/B/gZxi5\nZfAO4GOZ+dmuFlVBRPwU8HVgPSM5APA/MnNt96qauIh4KyOfl9Jg5IL9LzPzrsrnnW7hL0nqbNot\n+0iSOjP8JalAhr8kFcjwl6QCGf6SVCDDX5IKZPhLUoH+HysioA1TJoY1AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d93f26d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "yx1 = np.zeros_like(x1) + 0.25\n",
    "yx = np.zeros_like(x_vals) + 0.20\n",
    "yxd1 = np.zeros_like(xd1) + 0.10\n",
    "yxd = np.zeros_like(xd_vals) + 0.05\n",
    "ya1 = np.zeros_like(a1) - 0.05\n",
    "ya = np.zeros_like(a_vals) - 0.10\n",
    "yad1 = np.zeros_like(ad1) - 0.20\n",
    "yad = np.zeros_like(ad_vals) - 0.25\n",
    "\n",
    "plt.ylim([-0.3, 0.3])\n",
    "\n",
    "plt.plot(x1, yx1, '|')\n",
    "plt.plot(xd1, yxd1, '|')\n",
    "plt.plot(a1, ya1, '|')\n",
    "plt.plot(ad1, yad1, '|')\n",
    "\n",
    "plt.plot(x_vals, yx, '.')\n",
    "plt.plot(xd_vals, yxd, '.')\n",
    "plt.plot(a_vals, ya, '.')\n",
    "plt.plot(ad_vals, yad, '.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Nice, how about we add the lower and upper boundaries we got before?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85dd1ac940>]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d95c6400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "yx1 = np.zeros_like(x1) + 0.25\n",
    "yx = np.zeros_like(x_vals) + 0.20\n",
    "yxd1 = np.zeros_like(xd1) + 0.10\n",
    "yxd = np.zeros_like(xd_vals) + 0.05\n",
    "ya1 = np.zeros_like(a1) - 0.05\n",
    "ya = np.zeros_like(a_vals) - 0.10\n",
    "yad1 = np.zeros_like(ad1) - 0.20\n",
    "yad = np.zeros_like(ad_vals) - 0.25\n",
    "\n",
    "plt.plot(x1, yx1, '|')\n",
    "plt.plot(xd1, yxd1, '|')\n",
    "plt.plot(a1, ya1, '|')\n",
    "plt.plot(ad1, yad1, '|')\n",
    "\n",
    "plt.plot(x_vals, yx, '.')\n",
    "plt.plot(xd_vals, yxd, '.')\n",
    "plt.plot(a_vals, ya, '.')\n",
    "plt.plot(ad_vals, yad, '.')\n",
    "\n",
    "\n",
    "plt.ylim([-0.3, 0.3])\n",
    "\n",
    "plt.plot((x_thres[0], x_thres[0]), (0.15, 0.25), 'k-', color='red')\n",
    "plt.plot((x_thres[1], x_thres[1]), (0.15, 0.25), 'k-', color='red')\n",
    "plt.plot((a_thres[0], a_thres[0]), (-0.05, -0.15), 'k-', color='red')\n",
    "plt.plot((a_thres[1], a_thres[1]), (-0.05, -0.15), 'k-', color='red')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Nice, you might not agree with the buckets I selected. That is OK, in fact I hope you don't, there seems to be a better way of manually selecting these buckets. You will get a chance at improving on this later.\n",
    "\n",
    "Let me give you a couple of functions that would make our algorithm work."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "def learning_schedule(episode, n_episodes):\n",
    "    return max(0., min(0.8, 1 - episode/n_episodes))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Learning schedule is similar to what `action_selection` did for our previous notebooks. This time we are doing it with the `alpha` which is the learning rate and determines the importance and weight we give to newly calculated values in comparison with values we calculated in ealier iterations. Think about it like how much you trust your past knowledge. Intuitively, early in the exploration phase we don't know much of the environment, so perhaps that is an indication that we should rely on our previous calculation that much. But the more experience, the more should hold onto your knowledge. Now, remember this is also a 'dilemma' meaning there is a tradeoff and there is not a clear cut answer.\n",
    "\n",
    "Let's continue. We define `action_selection` just as before:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "def action_selection(state, Q, episode, n_episodes):\n",
    "    epsilon = 0.99 if episode < n_episodes//4 else 0.33 if episode < n_episodes//2 else 0.\n",
    "    if np.random.random() < epsilon:\n",
    "        action = np.random.randint(Q.shape[1])\n",
    "    else:\n",
    "        action = np.argmax(Q[state])\n",
    "    return action, epsilon"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "And this function, `observation_to_state` will take care of the discretazition. It will input a tuple of continuous values and give us an integer. Let's take a look:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "def observation_to_state(observation, bins):\n",
    "    ss = []\n",
    "    for i in range(len(observation)):\n",
    "        ss.append(int(np.digitize(observation[i], bins=bins[i])))\n",
    "    state = int(\"\".join(map(lambda feature: str(int(feature)), ss)))\n",
    "    return state"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2375\n",
      "1375\n",
      "2275\n",
      "2325\n",
      "2378\n"
     ]
    }
   ],
   "source": [
    "sample_states = [[0.33, 0.2, 0.1, 0.], \n",
    "                 [-0.33, 0.2, 0.1, 0.], \n",
    "                 [0.33, -0.2, 0.1, 0.], \n",
    "                 [0.33, 0.2, -0.1, 0.], \n",
    "                 [0.33, 0.2, 0.1, .99]]\n",
    "for sample_state in sample_states:\n",
    "    print(observation_to_state(sample_state, (x1, xd1, a1, ad1)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Cool, right?\n",
    "\n",
    "Alright, I'll give you the new q_learning algorithm."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "def q_learning(env, bins, gamma = 0.99):\n",
    "    nS = 10 * 10 * 10 * 10\n",
    "    nA = env.env.action_space.n\n",
    "    \n",
    "    Q = np.random.random((nS, nA)) - 0.5\n",
    "    n_episodes = 5000\n",
    "    \n",
    "    alphas = []\n",
    "    epsilons = []\n",
    "    states = []\n",
    "    actions = []\n",
    "    for episode in range(n_episodes):\n",
    "        observation = env.reset()\n",
    "        state = observation_to_state(observation, bins)\n",
    "    \n",
    "        done = False\n",
    "        while not done:\n",
    "            states.append(state)\n",
    "            \n",
    "            action, epsilon = action_selection(state, Q, episode, n_episodes)\n",
    "            epsilons.append(epsilon)\n",
    "            actions.append(action)\n",
    "            \n",
    "            observation, reward, done, info = env.step(action)\n",
    "            nstate = observation_to_state(observation, bins)\n",
    "            \n",
    "            alpha = learning_schedule(episode, n_episodes)\n",
    "            alphas.append(alpha)\n",
    "            \n",
    "            Q[state][action] += alpha * (reward + gamma * Q[nstate].max() * (not done) - Q[state][action])\n",
    "            state = nstate\n",
    "    return Q, (alphas, epsilons, states, actions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "You can see it, just like we did before, only differences are the use of the functions defined above and the collection of the alphas, epsilons, etc. This latter one is just to show you some stats and graphs, you could remove them and it would do just as well.\n",
    "\n",
    "Let's run this algorithm?! Shall we?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2017-04-26 16:54:26,629] Making new env: CartPole-v0\n",
      "[2017-04-26 16:54:26,632] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000000.mp4\n",
      "[2017-04-26 16:54:28,856] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000001.mp4\n",
      "[2017-04-26 16:54:29,111] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000008.mp4\n",
      "[2017-04-26 16:54:29,302] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000027.mp4\n",
      "[2017-04-26 16:54:29,482] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000064.mp4\n",
      "[2017-04-26 16:54:29,648] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000125.mp4\n",
      "[2017-04-26 16:54:29,846] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000216.mp4\n",
      "[2017-04-26 16:54:30,131] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000343.mp4\n",
      "[2017-04-26 16:54:30,427] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000512.mp4\n",
      "[2017-04-26 16:54:30,774] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video000729.mp4\n",
      "[2017-04-26 16:54:31,147] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video001000.mp4\n",
      "[2017-04-26 16:54:33,633] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video002000.mp4\n",
      "[2017-04-26 16:54:38,052] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video003000.mp4\n",
      "[2017-04-26 16:54:42,781] Starting new video recorder writing to /tmp/tmpqn4_aye8/openaigym.video.0.114.video004000.mp4\n"
     ]
    }
   ],
   "source": [
    "mdir = tempfile.mkdtemp()\n",
    "env = gym.make('CartPole-v0')\n",
    "env = wrappers.Monitor(env, mdir, force=True)\n",
    "\n",
    "Q, stats = q_learning(env, (x1, xd1, a1, ad1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Now, let's take a look at some of the episodes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true,
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <h2>Episode 0<h2/>\n",
       "    <video width=\"960\" height=\"540\" controls>\n",
       "        <source src=\"data:video/mp4;base64,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\" type=\"video/mp4\" />\n",
       "    </video>\n",
       "    <h2>Episode 216<h2/>\n",
       "    <video width=\"960\" height=\"540\" controls>\n",
       "        <source src=\"data:video/mp4;base64,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\" type=\"video/mp4\" />\n",
       "    </video>\n",
       "    <h2>Episode 4000<h2/>\n",
       "    <video width=\"960\" height=\"540\" controls>\n",
       "        <source src=\"data:video/mp4;base64,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AQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAIAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAIAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAACAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAIAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABAAAAAEAAAACAAAAAQAAAAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAACPHN0c3oAAAAAAAAAAAAAAIoAAAS1AAAA1wAAAE4AAAA/AAAANwAAAGIAAABzAAAAVgAAAC8AAAA3AAAAdwAAADIAAABDAAAAIQAAAJ8AAAA4AAAANgAAADcAAABcAAAAswAAAEwAAAA6AAAAMAAAAMQAAABRAAAAMgAAADQAAACcAAAAPAAAAEoAAAAuAAAArAAAAD4AAAAyAAAALgAAAKoAAAA/AAAARgAAADEAAACXAAAAQAAAAEoAAABBAAAAbQAAADwAAABSAAAAQQAAAGIAAABSAAAATAAAAFYAAACIAAAARQAAAFQAAABVAAAAmwAAAE8AAAA6AAAAOQAAAMgAAABfAAAARgAAAEoAAACoAAAAgAAAAFQAAABRAAAAggAAAFAAAABTAAAATQAAAHwAAAB1AAAAQwAAADIAAAAyAAAAZAAAAEkAAAA7AAAAKgAAAIcAAABeAAAANAAAAEMAAABaAAAARwAAADgAAAAtAAAAdgAAAG8AAAA/AAAAMQAAAHEAAABNAAAAUAAAADMAAAB7AAAAPgAAAC0AAAAwAAAAfwAAADAAAABBAAAAPgAAAI4AAAB1AAAAXgAAAEAAAAA9AAAAhgAAAHEAAABeAAAANwAAAE0AAACdAAAASQAAAFAAAABBAAAAigAAAGYAAABJAAAAQgAAAI8AAACkAAAAVgAAAFwAAABOAAAAyQAAAG4AAABPAAAAUAAAAKwAAABzAAAAQwAAAE8AAABkAAAARgAAAFQAAAI4c3RjbwAAAAAAAACKAAAAMAAABOUAAAW8AAAGCgAABkkAAAaAAAAG4gAAB1UAAAerAAAH2gAACBEAAAiIAAAIugAACP0AAAkeAAAJvQAACfUAAAorAAAKYgAACr4AAAtxAAALvQAAC/cAAAwnAAAM6wAADTwAAA1uAAANogAADj4AAA56AAAOxAAADvIAAA+eAAAP3AAAEA4AABA8AAAQ5gAAESUAABFrAAARnAAAEjMAABJzAAASvQAAEv4AABNrAAATpwAAE/kAABQ6AAAUnAAAFO4AABU6AAAVkAAAFhgAABZdAAAWsQAAFwYAABehAAAX8AAAGCoAABhjAAAZKwAAGYoAABnQAAAaGgAAGsIAABtCAAAblgAAG+cAABxpAAAcuQAAHQwAAB1ZAAAd1QAAHkoAAB6NAAAevwAAHvEAAB9VAAAfngAAH9kAACADAAAgigAAIOgAACEcAAAhXwAAIbkAACIAAAAiOAAAImUAACLbAAAjSgAAI4kAACO6AAAkKwAAJHgAACTIAAAk+wAAJXYAACW0AAAl4QAAJhEAACaQAAAmwAAAJwEAACc/AAAnzQAAKEIAACigAAAo4AAAKR0AACmjAAAqFAAAKnIAACqpAAAq9gAAK5MAACvcAAAsLAAALG0AACz3AAAtXQAALaYAAC3oAAAudwAALxsAAC9xAAAvzQAAMBsAADDkAAAxUgAAMaEAADHxAAAynQAAMxAAADNTAAAzogAANAYAADRMAAAAX3VkdGEAAABXbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcmFwcGwAAAAAAAAAAAAAAAAqaWxzdAAAACKpdG9vAAAAGmRhdGEAAAABAAAAAExhdmY1Ni4xLjA=\" type=\"video/mp4\" />\n",
       "    </video>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "videos = np.array(env.videos)\n",
    "n_videos = 3\n",
    "\n",
    "idxs = np.linspace(0, len(videos) - 1, n_videos).astype(int)\n",
    "videos = videos[idxs,:]\n",
    "\n",
    "strm = ''\n",
    "for video_path, meta_path in videos:\n",
    "    video = io.open(video_path, 'r+b').read()\n",
    "    encoded = base64.b64encode(video)\n",
    "    \n",
    "    with open(meta_path) as data_file:    \n",
    "        meta = json.load(data_file)\n",
    "\n",
    "    html_tag = \"\"\"\n",
    "    <h2>{0}<h2/>\n",
    "    <video width=\"960\" height=\"540\" controls>\n",
    "        <source src=\"data:video/mp4;base64,{1}\" type=\"video/mp4\" />\n",
    "    </video>\"\"\"\n",
    "    strm += html_tag.format('Episode ' + str(meta['episode_id']), encoded.decode('ascii'))\n",
    "HTML(data=strm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Interesting right?\n",
    "\n",
    "The last episode should show how the agent 'knows' what the goal of the environment, but perhaps not an impressive performance.\n",
    "\n",
    "Let's look into the value function and policy:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  0.47535795,  14.03615681,  17.11912036, ...,  -0.04913746,\n",
       "         0.16842233,   0.49941368])"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V = np.max(Q, axis=1)\n",
    "V"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "88.554472947818169"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, ..., 0, 1, 0])"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pi = np.argmax(Q, axis=1)\n",
    "pi"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "So, policy looks pretty much the same they looked before. This is because we \"made\" this environment discrete. Hold your thoughts...\n",
    "\n",
    "Let's close this environment and see how the agent did per OpenAI Gym."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2017-04-02 21:58:51,167] Finished writing results. You can upload them to the scoreboard via gym.upload('/tmp/tmpvdek3zuv')\n"
     ]
    }
   ],
   "source": [
    "env.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2017-04-02 21:58:51,190] [CartPole-v0] Uploading 5000 episodes of training data\n",
      "[2017-04-02 21:58:52,419] [CartPole-v0] Uploading videos of 14 training episodes (57206 bytes)\n",
      "[2017-04-02 21:58:52,692] [CartPole-v0] Creating evaluation object from /tmp/tmpvdek3zuv with learning curve and training video\n",
      "[2017-04-02 21:58:53,054] \n",
      "****************************************************\n",
      "You successfully uploaded your evaluation on CartPole-v0 to\n",
      "OpenAI Gym! You can find it at:\n",
      "\n",
      "    https://gym.openai.com/evaluations/eval_AhsiLjLyTDO1gwgnApVzpQ\n",
      "\n",
      "****************************************************\n"
     ]
    }
   ],
   "source": [
    "gym.upload(mdir, api_key='<YOUR API KEY>')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Not thaaaat well. The agent should have shown learning, but very likely it did not pass the environment. In other words, it learned, but definitely not a solid enough policy.\n",
    "\n",
    "Let's look at some of the things collected."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "alphas, epsilons, states, actions = stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7f85d0bd5dd8>"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d0a4d710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(np.arange(len(alphas)), alphas, '.')\n",
    "plt.title('Alphas')\n",
    "plt.xlabel('Episode')\n",
    "plt.ylabel('Percentage')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "See the learning rate goes from 0.8 to 0? Alright."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7f85d0ba7cf8>"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFnNJREFUeJzt3Xu0ZnV93/H3xxm5KHdnsDgzMFAnKrEk4ClCcRlbxII0\n0JWQAmrV1EqposnCtmuIxqBddqlJqpGSCiyol0QQbUJHGYWIREsqMIeAyG3iZAIyQsKQcBFRuX37\nx95n+3g4l2eGs8/DnPN+rfWss/dv3757r3nm8+x7qgpJkgCeM+oCJEnPHoaCJKljKEiSOoaCJKlj\nKEiSOoaCJKljKEhzJMkbk1w50F9JXjzKmqRtFe9T0GKV5E7ghcCTA82fqqoz5mj+Baypqk1zMT9p\nPiwddQHSiP1yVX1t1EVIzxYePpImSfLWJH+R5JwkDyW5I8nRk4ZvTvKDJH+T5I0D7ddMM889k3wm\nydYkdyV5X5LnDE6X5PeSPNDO87j5WVvpZ7mnIE3tlcAXgWXArwB/kuRA4CfAJ4B/WlUbk+wH7DPE\n/M4B9gQOAl4AXAncC1w4sLxPt8s7DbgwyYry+K7mmXsKWuwuS/LgwOftbft9wMer6vGq+jywETi+\nHfYU8PIku1bVvVV160wLSLIEOBk4q6p+UFV3Ar8P/NuB0e6qqguq6kmacNiP5nyHNK8MBS12/7qq\n9hr4XNC2f3/Sr/S7gBdV1Q9p/oM/Hbg3yeVJXjrLMpYBO7XzGJzfioH+v53oqKpH287dtmN9pGfE\nUJCmtiJJBvr3B+4BqKorquoYml/zdwAXTDH9oPuBx4EDJs3v+3NXrjQ3DAVpavsC707y3CS/BrwM\nWJ/khUlOSPJ8mvMLj/Czl7Q+TXtI6FLgQ0l2T3IAcCbwR/2ugrTtDAUtdl9K8sjA50/b9uuANTS/\n8j8EnFRVf0/znXkPzV7DPwC/BLxjiOW8C/ghsBm4BvgccNGcrok0B7x5TZokyVuBf19Vrxp1LdJ8\nc09BktQxFCRJHQ8fSZI67ilIkjo73GMuli1bVqtXrx51GZK0Q7nhhhvur6rls423w4XC6tWrGR8f\nH3UZkrRDSXLX7GN5+EiSNMBQkCR1DAVJUqe3UEhyUZL7ktwyzfAk+USSTUluTnJYX7VIkobT557C\np4BjZxh+HM2zZdbQvFTkf/ZYiyRpCL2FQlV9k+aBYdM5EfhMNa4F9mrfYiVJGpFRXpK6Arh7oH9L\n23bv5BGTnEazN8H++++/XQtbvfby7ZpuNnd++PjZR5KkHcQoTzRnirYpn7lRVedX1VhVjS1fPuu9\nF0/TVyD0PW9Jmm+jDIUtwKqB/pW0b7aSJI3GKENhHfDm9iqkI4CHqupph44kSfOnz0tSLwa+Bbwk\nyZYkb0tyepLT21HW07yFahPNO26HeXvVdunzuL/nFCQtJDvco7PHxsbKZx9J0rZJckNVjc02nnc0\nS5I6hoIkqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6\nhoIkqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6hoIk\nqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6vYZCkmOTbEyyKcnaKYbvn+TqJDcmuTnJ6/usR5I0s95C\nIckS4FzgOOBg4NQkB08a7X3ApVV1KHAK8Id91SNJml2fewqHA5uqanNVPQZcApw4aZwC9mi79wTu\n6bEeSdIs+gyFFcDdA/1b2rZBZwNvSrIFWA+8a6oZJTktyXiS8a1bt/ZRqySJfkMhU7TVpP5TgU9V\n1Urg9cBnkzytpqo6v6rGqmps+fLlPZQqSYJ+Q2ELsGqgfyVPPzz0NuBSgKr6FrALsKzHmiRJM+gz\nFDYAa5IcmGQnmhPJ6yaN8z3gaIAkL6MJBY8PSdKI9BYKVfUEcAZwBXA7zVVGtyb5YJIT2tHeA7w9\nybeBi4G3VtXkQ0ySpHmytM+ZV9V6mhPIg23vH+i+DTiqzxokScPzjmZJUsdQkCR1DAVJUsdQkCR1\nDAVJUsdQkCR1DAVJUsdQkCR1DAVJUsdQkCR1DAVJUsdQkCR1DAVJUsdQkCR1DAVJUsdQkCR1DAVJ\nUsdQkCR1DAVJUsdQkCR1DAVJUsdQkCR1DAVJUsdQkCR1DAVJUsdQkCR1DAVJUsdQkCR1DAVJUmfo\nUEiya5KX9FmMJGm0hgqFJL8M3AR8te3/xSTr+ixMkjT/ht1TOBs4HHgQoKpuAlbPNlGSY5NsTLIp\nydppxvk3SW5LcmuSzw1ZjySpB0uHHO+JqnooydAzTrIEOBc4BtgCbEiyrqpuGxhnDXAWcFRVPZBk\n3+FLlyTNtWH3FG5J8gZgSZI1Sc4B/t8s0xwObKqqzVX1GHAJcOKkcd4OnFtVDwBU1X3bULskaY4N\n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\nhoIkqfP/AUmfhIX9J9R0AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d0ce5588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(np.arange(len(epsilons)), epsilons, '.')\n",
    "plt.title('Epsilon')\n",
    "plt.xlabel('Episode')\n",
    "plt.ylabel('Percentage')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Interesting exploration style. We force 100% exploration for few episodes, then to ~30% and then become greedy at about 150,000 episodes. Not bad. Could we do better?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7f85cf99c630>"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d0bfae10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "hist, bins = np.histogram(states, bins=50)\n",
    "width = 0.7 * (bins[1] - bins[0])\n",
    "center = (bins[:-1] + bins[1:]) / 2\n",
    "plt.bar(center, hist, align='center', width=width)\n",
    "plt.title('States Visited')\n",
    "plt.xlabel('State')\n",
    "plt.ylabel('Count')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "See some states not visited? That's a by product of the way we discretized the state space, it should not be a problem unless we have a very very large state space after discretization. Then, it might be beneficial tighting things up.\n",
    "\n",
    "How about the actions?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x7f85cf8b9240>"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nDBtJUnf/H6I8O5NEnkMWAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d9647e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "hist, bins = np.histogram(actions, bins=3)\n",
    "width = 0.7 * (bins[1] - bins[0])\n",
    "center = (bins[:-1] + bins[1:]) / 2\n",
    "plt.bar(center, hist, align='center', width=width)\n",
    "plt.title('Actions Selected')\n",
    "plt.xlabel('Action')\n",
    "plt.ylabel('Count')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Expected, I would say. If you want to balance a pole you will have to go left and right to keep the pole in place.\n",
    "\n",
    "Ok, so from these figures you should think about ways to make this algorithm work. Why things didn't work?? How can we make it learn more or better?\n",
    "\n",
    "I'll let you explore from now on..."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "### Your turn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-0.15, 0.15)"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d0c36b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x_vals, y + 0.10, '.')\n",
    "plt.plot(xd_vals, y + 0.05, '.')\n",
    "plt.plot(a_vals, y - 0.05, '.')\n",
    "plt.plot(ad_vals, y - 0.10, '.')\n",
    "\n",
    "plt.ylim([-0.15, 0.15])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85cf7c24a8>]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85cf81f5f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x1 = np.linspace(x_thres[0] + .5, x_thres[1] - .5, \n",
    "                 2, endpoint=False)[1:]\n",
    "y1 = np.zeros(len(x1)) + 0.05\n",
    "\n",
    "plt.ylim([-0.075, 0.075])\n",
    "plt.plot(x1, y1, 'o')\n",
    "plt.plot(x_vals, y, '.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85cf730160>]"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85cf7d3b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "all_vals = np.sort(np.append(\n",
    "    (np.logspace(-5, 4, 5, endpoint=False, base=2)[1:],\n",
    "    -np.logspace(-5, 4, 5, endpoint=False, base=2)[1:]), 0))\n",
    "idxs = np.where(np.abs(all_vals) < 2)\n",
    "xd1 = all_vals[idxs]\n",
    "y1 = np.zeros(len(xd1)) + 0.05\n",
    "\n",
    "plt.ylim([-0.075, 0.075])\n",
    "plt.plot(xd1, y1, 'o')\n",
    "plt.plot(xd_vals, y, '.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85cf698668>]"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85cf77a860>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "all_vals = np.sort(np.append(\n",
    "    (np.logspace(-6, 0.01, 4, endpoint=False, base=2)[1:],\n",
    "    -np.logspace(-6, 0.01, 4, endpoint=False, base=2)[1:]), 0))\n",
    "idxs = np.where(np.abs(all_vals) < a_thres[1] - 0.1)\n",
    "a1 = all_vals[idxs]\n",
    "y1 = np.zeros(len(a1)) + 0.05\n",
    "\n",
    "plt.ylim([-0.1, 0.1])\n",
    "plt.plot(a1, y1, 'o')\n",
    "plt.plot(a_vals, y, '.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85cef5acf8>]"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nWr6mAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85cf9a1400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "all_vals = np.sort(np.append(\n",
    "    (np.logspace(-7, 4, 6, endpoint=False, base=2)[1:],\n",
    "    -np.logspace(-7, 4, 6, endpoint=False, base=2)[1:]), 0))\n",
    "idxs = np.where(np.abs(all_vals) < 2)\n",
    "ad1 = all_vals[idxs]\n",
    "y1 = np.zeros(len(ad1)) + 0.05\n",
    "\n",
    "plt.ylim([-0.075, 0.075])\n",
    "plt.plot(ad1, y1, 'o')\n",
    "plt.plot(ad_vals, y, '.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85cf7fffd0>]"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nL0kF+n/mf3RJr+amdgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85cf6d5cf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "yx1 = np.zeros_like(x1) + 0.25\n",
    "yx = np.zeros_like(x_vals) + 0.20\n",
    "yxd1 = np.zeros_like(xd1) + 0.10\n",
    "yxd = np.zeros_like(xd_vals) + 0.05\n",
    "ya1 = np.zeros_like(a1) - 0.05\n",
    "ya = np.zeros_like(a_vals) - 0.10\n",
    "yad1 = np.zeros_like(ad1) - 0.20\n",
    "yad = np.zeros_like(ad_vals) - 0.25\n",
    "\n",
    "plt.ylim([-0.3, 0.3])\n",
    "\n",
    "plt.plot(x1, yx1, '|')\n",
    "plt.plot(xd1, yxd1, '|')\n",
    "plt.plot(a1, ya1, '|')\n",
    "plt.plot(ad1, yad1, '|')\n",
    "\n",
    "plt.plot(x_vals, yx, '.')\n",
    "plt.plot(xd_vals, yxd, '.')\n",
    "plt.plot(a_vals, ya, '.')\n",
    "plt.plot(ad_vals, yad, '.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85cee72fd0>]"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85cf7fb978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "yx1 = np.zeros_like(x1) + 0.25\n",
    "yx = np.zeros_like(x_vals) + 0.20\n",
    "yxd1 = np.zeros_like(xd1) + 0.10\n",
    "yxd = np.zeros_like(xd_vals) + 0.05\n",
    "ya1 = np.zeros_like(a1) - 0.05\n",
    "ya = np.zeros_like(a_vals) - 0.10\n",
    "yad1 = np.zeros_like(ad1) - 0.20\n",
    "yad = np.zeros_like(ad_vals) - 0.25\n",
    "\n",
    "plt.plot(x1, yx1, '|')\n",
    "plt.plot(xd1, yxd1, '|')\n",
    "plt.plot(a1, ya1, '|')\n",
    "plt.plot(ad1, yad1, '|')\n",
    "\n",
    "plt.plot(x_vals, yx, '.')\n",
    "plt.plot(xd_vals, yxd, '.')\n",
    "plt.plot(a_vals, ya, '.')\n",
    "plt.plot(ad_vals, yad, '.')\n",
    "\n",
    "\n",
    "plt.ylim([-0.3, 0.3])\n",
    "\n",
    "plt.plot((x_thres[0], x_thres[0]), (0.15, 0.25), 'k-', color='red')\n",
    "plt.plot((x_thres[1], x_thres[1]), (0.15, 0.25), 'k-', color='red')\n",
    "plt.plot((a_thres[0], a_thres[0]), (-0.05, -0.15), 'k-', color='red')\n",
    "plt.plot((a_thres[1], a_thres[1]), (-0.05, -0.15), 'k-', color='red')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "def learning_schedule(episode, n_episodes):\n",
    "    return max(0., min(0.8, 1 - episode/n_episodes))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "def action_selection(state, Q, episode, n_episodes):\n",
    "    epsilon = 0.99 if episode < n_episodes//4 else 0.33 if episode < n_episodes//2 else 0.\n",
    "    if np.random.random() < epsilon:\n",
    "        action = np.random.randint(Q.shape[1])\n",
    "    else:\n",
    "        action = np.argmax(Q[state])\n",
    "    return action, epsilon"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "def observation_to_state(observation, bins):\n",
    "    ss = []\n",
    "    for i in range(len(observation)):\n",
    "        ss.append(int(np.digitize(observation[i], bins=bins[i])))\n",
    "    state = int(\"\".join(map(lambda feature: str(int(feature)), ss)))\n",
    "    return state"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "def q_learning(env, bins, gamma = 0.99):\n",
    "    nS = 10 * 10 * 10 * 10\n",
    "    nA = env.env.action_space.n\n",
    "    \n",
    "    Q = np.random.random((nS, nA)) - 0.5\n",
    "    n_episodes = 5000\n",
    "    \n",
    "    alphas = []\n",
    "    epsilons = []\n",
    "    states = []\n",
    "    actions = []\n",
    "    for episode in range(n_episodes):\n",
    "        observation = env.reset()\n",
    "        state = observation_to_state(observation, bins)\n",
    "    \n",
    "        done = False\n",
    "        while not done:\n",
    "            states.append(state)\n",
    "            \n",
    "            action, epsilon = action_selection(state, Q, episode, n_episodes)\n",
    "            epsilons.append(epsilon)\n",
    "            actions.append(action)\n",
    "            \n",
    "            observation, reward, done, info = env.step(action)\n",
    "            nstate = observation_to_state(observation, bins)\n",
    "            \n",
    "            alpha = learning_schedule(episode, n_episodes)\n",
    "            alphas.append(alpha)\n",
    "            \n",
    "            Q[state][action] += alpha * (reward + gamma * Q[nstate].max() * (not done) - Q[state][action])\n",
    "            state = nstate\n",
    "    return Q, (alphas, epsilons, states, actions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2017-04-26 17:15:05,792] Making new env: CartPole-v0\n",
      "[2017-04-26 17:15:05,813] Finished writing results. You can upload them to the scoreboard via gym.upload('/tmp/tmpqn4_aye8')\n",
      "[2017-04-26 17:15:05,817] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000000.mp4\n",
      "[2017-04-26 17:15:06,013] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000001.mp4\n",
      "[2017-04-26 17:15:06,227] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000008.mp4\n",
      "[2017-04-26 17:15:06,561] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000027.mp4\n",
      "[2017-04-26 17:15:06,708] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000064.mp4\n",
      "[2017-04-26 17:15:06,874] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000125.mp4\n",
      "[2017-04-26 17:15:07,266] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000216.mp4\n",
      "[2017-04-26 17:15:07,524] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000343.mp4\n",
      "[2017-04-26 17:15:07,929] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000512.mp4\n",
      "[2017-04-26 17:15:08,374] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video000729.mp4\n",
      "[2017-04-26 17:15:08,713] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video001000.mp4\n",
      "[2017-04-26 17:15:10,762] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video002000.mp4\n",
      "[2017-04-26 17:15:14,562] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video003000.mp4\n",
      "[2017-04-26 17:15:20,444] Starting new video recorder writing to /tmp/tmplxfovf67/openaigym.video.1.114.video004000.mp4\n"
     ]
    }
   ],
   "source": [
    "mdir = tempfile.mkdtemp()\n",
    "env = gym.make('CartPole-v0')\n",
    "env = wrappers.Monitor(env, mdir, force=True)\n",
    "\n",
    "Q, stats = q_learning(env, (x1, xd1, a1, ad1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true,
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <h2>Episode 0<h2/>\n",
       "    <video width=\"960\" height=\"540\" controls>\n",
       "        <source src=\"data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAClltZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQzMSBhNTgzMWFhIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTYgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAB5WWIhAAv//72rvzLK0cLlS4dWXuzUfLoSXL9iDB9aAAAAwAAAwAAJuKiZ0WFMeJsgAAALmAIWElDyDzETFWKgSxBQ4V8s07EoSewLCv1s0/P2ukOfbI4AChfqcWuyycYIz/BQgzMDiwbFZUbWNrkXvXQ93EVbb28y2Gvs4XI1w0f07oCnwznm9/UcAI/qOxUIYhZV0JaXhQlfOJFkgwb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\" type=\"video/mp4\" />\n",
       "    </video>\n",
       "    <h2>Episode 216<h2/>\n",
       "    <video width=\"960\" height=\"540\" controls>\n",
       "        <source src=\"data:video/mp4;base64,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\" type=\"video/mp4\" />\n",
       "    </video>\n",
       "    <h2>Episode 4000<h2/>\n",
       "    <video width=\"960\" height=\"540\" controls>\n",
       "        <source src=\"data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAASa1tZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQzMSBhNTgzMWFhIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTYgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAABy2WIhAAv//72rvzLK0cLlS4dWXuzUfLoSXL9iDB9aAAAAwAAAwAAJuKiZ0WFMeJsgAAALmAIWElDyDzETFWKgSxIZq+DlxSgH1EwM1oGMCvMWDFubrIqmI5mC8TWDGFUztbPD/51hunKX+mDF7XE0NArxUU9d7qkOWu7JR+QMBda0QGAVHJNi/Cqp+XiGZqO3YPOtmbyE13cNfhp2lnn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AAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAACAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAAAAEAAAACAAAAAQAAAAAAAAABAAAAAQAAAAEAAAAFAAAAAQAAAAIAAAABAAAAAAAAAAEAAAABAAAAAQAAAAUAAAABAAAAAgAAAAEAAAAAAAAAAQAAAAEAAAABAAAABQAA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\" type=\"video/mp4\" />\n",
       "    </video>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "videos = np.array(env.videos)\n",
    "n_videos = 3\n",
    "\n",
    "idxs = np.linspace(0, len(videos) - 1, n_videos).astype(int)\n",
    "videos = videos[idxs,:]\n",
    "\n",
    "strm = ''\n",
    "for video_path, meta_path in videos:\n",
    "    video = io.open(video_path, 'r+b').read()\n",
    "    encoded = base64.b64encode(video)\n",
    "    \n",
    "    with open(meta_path) as data_file:    \n",
    "        meta = json.load(data_file)\n",
    "\n",
    "    html_tag = \"\"\"\n",
    "    <h2>{0}<h2/>\n",
    "    <video width=\"960\" height=\"540\" controls>\n",
    "        <source src=\"data:video/mp4;base64,{1}\" type=\"video/mp4\" />\n",
    "    </video>\"\"\"\n",
    "    strm += html_tag.format('Episode ' + str(meta['episode_id']), encoded.decode('ascii'))\n",
    "HTML(data=strm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  0.39549677,  22.40875019,  62.39175886, ...,   0.4135339 ,\n",
       "         0.22957031,  -0.11561215])"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V = np.max(Q, axis=1)\n",
    "V"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "95.175029734326586"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "V.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 0, ..., 1, 1, 1])"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pi = np.argmax(Q, axis=1)\n",
    "pi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2017-04-26 17:15:29,221] Finished writing results. You can upload them to the scoreboard via gym.upload('/tmp/tmplxfovf67')\n"
     ]
    }
   ],
   "source": [
    "env.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[2017-04-02 21:59:30,177] [CartPole-v0] Uploading 5000 episodes of training data\n",
      "[2017-04-02 21:59:31,154] [CartPole-v0] Uploading videos of 14 training episodes (72394 bytes)\n",
      "[2017-04-02 21:59:32,376] [CartPole-v0] Creating evaluation object from /tmp/tmpmkwghiu4 with learning curve and training video\n",
      "[2017-04-02 21:59:32,582] \n",
      "****************************************************\n",
      "You successfully uploaded your evaluation on CartPole-v0 to\n",
      "OpenAI Gym! You can find it at:\n",
      "\n",
      "    https://gym.openai.com/evaluations/eval_GDMU3XnQxi3N0vnynQNbg\n",
      "\n",
      "****************************************************\n"
     ]
    }
   ],
   "source": [
    "gym.upload(mdir, api_key='<YOUR API KEY>')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "alphas, epsilons, states, actions = stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85d2cd25c0>]"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n9dD/B8fk5i3lKQxxAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85ceeb6b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(np.arange(len(alphas)), alphas, '.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f85d1f148d0>]"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85cf6cbdd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(np.arange(len(epsilons)), epsilons, '.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d2d1eb70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "hist, bins = np.histogram(states, bins=50)\n",
    "width = 0.7 * (bins[1] - bins[0])\n",
    "center = (bins[:-1] + bins[1:]) / 2\n",
    "plt.bar(center, hist, align='center', width=width)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f85d1e73f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "hist, bins = np.histogram(actions, bins=3)\n",
    "width = 0.7 * (bins[1] - bins[0])\n",
    "center = (bins[:-1] + bins[1:]) / 2\n",
    "plt.bar(center, hist, align='center', width=width)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "So, how did you do??? Were you able to pass the environment??\n",
    "\n",
    "If you didn't do not worry, go take a look at the solution notebook. Mine wasn't perfect, but it should consistently pass the environment, which is good. The thing is, this thing of discretizing the state space can get old very quickly. Are you OK with doing some data analysis and manually tell the agent what to look for? Yeah, I didn't think so. That's what Machine Learning and Function Approximation is for!!! Why not use it?\n",
    "\n",
    "In the next notebook we will look into the same cart pole environment, but guess what, we will use a Neural Network to lear the environment. Now, this is not the DQN algorithm because we will not be feeding it raw images, but the concept should be very similar.\n",
    "\n",
    "Are you ready for Function Approximators? Deep Reinforcement Learning is a step away."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
